package com.micro.ai.template.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.micro.ai.commons.domain.ApiResponse;
import com.micro.ai.template.entity.WorkflowDefinition;
import com.micro.ai.template.entity.WorkflowExecution;

import java.util.Map;

/**
 * 工作流服务接口
 *
 * @author micro-ai
 * @since 0.0.1
 */
public interface WorkflowService {

    /**
     * 创建工作流定义
     */
    ApiResponse<WorkflowDefinition> createWorkflow(WorkflowDefinition workflow);

    /**
     * 更新工作流定义
     */
    ApiResponse<WorkflowDefinition> updateWorkflow(String workflowId, WorkflowDefinition workflow);

    /**
     * 删除工作流定义
     */
    ApiResponse<Void> deleteWorkflow(String workflowId);

    /**
     * 获取工作流详情
     */
    ApiResponse<WorkflowDefinition> getWorkflowById(String workflowId);

    /**
     * 分页查询工作流列表
     */
    ApiResponse<Page<WorkflowDefinition>> listWorkflows(Integer pageNum, Integer pageSize, Map<String, Object> params);

    /**
     * 执行工作流
     */
    ApiResponse<WorkflowExecution> executeWorkflow(String workflowId, Map<String, Object> inputData);

    /**
     * 取消工作流执行
     */
    ApiResponse<Void> cancelExecution(String executionId);

    /**
     * 获取工作流执行详情
     */
    ApiResponse<WorkflowExecution> getExecutionById(String executionId);

    /**
     * 查询工作流执行历史
     */
    ApiResponse<Page<WorkflowExecution>> listExecutionHistory(String workflowId, Integer pageNum, Integer pageSize);
}

